#include "KMotionDef.h"
main()
{
ch0->InputMode=ENCODER_MODE;
ch0->OutputMode=DAC_SERVO_MODE;
ch0->Vel=200000;
ch0->Accel=200000;
ch0->Jerk=2000000;
ch0->P=1.2;
ch0->I=0.0009;
ch0->D=85;
ch0->FFAccel=0;
ch0->FFVel=0;
ch0->MaxI=2000;
ch0->MaxErr=2000;
ch0->MaxOutput=2000;
ch0->DeadBandGain=1;
ch0->DeadBandRange=0;
ch0->InputChan0=0;
ch0->InputChan1=1;
ch0->OutputChan0=0;
ch0->OutputChan1=1;
ch0->MasterAxis=0;
ch0->LimitSwitchOptions=0x0;
ch0->InputGain0=-1;
ch0->InputGain1=1;
ch0->InputOffset0=0;
ch0->InputOffset1=0;
ch0->OutputGain=1;
ch0->OutputOffset=0;
ch0->SlaveGain=0;
ch0->BacklashMode=BACKLASH_OFF;
ch0->BacklashAmount=0;
ch0->BacklashRate=0;
ch0->invDistPerCycle=1;
ch0->Lead=0;
ch0->MaxFollowingError=8000;
ch0->StepperAmplitude=250;
ch0->iir[0].B0=1;
ch0->iir[0].B1=0;
ch0->iir[0].B2=0;
ch0->iir[0].A1=0;
ch0->iir[0].A2=0;
ch0->iir[1].B0=1;
ch0->iir[1].B1=0;
ch0->iir[1].B2=0;
ch0->iir[1].A1=0;
ch0->iir[1].A2=0;
ch0->iir[2].B0=0.01660940051079;
ch0->iir[2].B1=0.03321890160441;
ch0->iir[2].B2=0.01660940051079;
ch0->iir[2].A1=1.606789946556;
ch0->iir[2].A2=-0.6732289791107;
ch1->InputMode=ENCODER_MODE;
ch1->OutputMode=DAC_SERVO_MODE;
ch1->Vel=12000000;
ch1->Accel=160000;
ch1->Jerk=160000;
ch1->P=2.200000;
ch1->I=0.016000;
ch1->D=105.000000;
ch1->FFAccel=0.000000;
ch1->FFVel=0.000000;
ch1->MaxI=200.000000;
ch1->MaxErr=80000;
ch1->MaxOutput=2000.000000;
ch1->DeadBandGain=1.000000;
ch1->DeadBandRange=0.000000;
ch1->InputChan0=1;
ch1->InputChan1=2;
ch1->OutputChan0=1;
ch1->OutputChan1=3;
ch1->OutputGain=-1;
ch1->LimitSwitchOptions=0x0;
ch1->InputGain0=-1.000000;
ch1->InputGain1=1.000000;
ch1->InputOffset0=0.000000;
ch1->InputOffset1=0.000000;
ch1->invDistPerCycle=1.000000;
ch1->Lead=0.000000;
ch1->MaxFollowingError=8000;
ch1->StepperAmplitude=250.000000;
ch1->iir[0].B0=1.000000;
ch1->iir[0].B1=0.000000;
ch1->iir[0].B2=0.000000;
ch1->iir[0].A1=0.000000;
ch1->iir[0].A2=0.000000;
ch1->iir[1].B0=1.000000;
ch1->iir[1].B1=0.000000;
ch1->iir[1].B2=0.000000;
ch1->iir[1].A1=0.000000;
ch1->iir[1].A2=0.000000;
ch1->iir[2].B0=1.000000;
ch1->iir[2].B1=0.000000;
ch1->iir[2].B2=0.000000;
ch1->iir[2].A1=0.000000;
ch1->iir[2].A2=0.000000;
ch2->InputMode=ENCODER_MODE;
ch2->OutputMode=DAC_SERVO_MODE;
ch2->Vel=12000000;
ch2->Accel=160000;
ch2->Jerk=160000;
ch2->P=2.200000;
ch2->I=0.010000;
ch2->D=45.000000;
ch2->FFAccel=0.000000;
ch2->FFVel=0.000000;
ch2->MaxI=200.000000;
ch2->MaxErr=80000;
ch2->MaxOutput=2000.000000;
ch2->DeadBandGain=1.000000;
ch2->DeadBandRange=0.000000;
ch2->InputChan0=2;
ch2->InputChan1=3;
ch2->OutputChan0=2;
ch2->OutputChan1=5;
ch2->OutputGain=-1;
ch2->LimitSwitchOptions=0x0;
ch2->InputGain0=-1.000000;
ch2->InputGain1=1.000000;
ch2->InputOffset0=0.000000;
ch2->InputOffset1=0.000000;
ch2->invDistPerCycle=1.000000;
ch2->Lead=0.000000;
ch2->MaxFollowingError=8000;
ch2->StepperAmplitude=250.000000;
ch2->iir[0].B0=1.000000;
ch2->iir[0].B1=0.000000;
ch2->iir[0].B2=0.000000;
ch2->iir[0].A1=0.000000;
ch2->iir[0].A2=0.000000;
ch2->iir[1].B0=1.000000;
ch2->iir[1].B1=0.000000;
ch2->iir[1].B2=0.000000;
ch2->iir[1].A1=0.000000;
ch2->iir[1].A2=0.000000;
ch2->iir[2].B0=1.000000;
ch2->iir[2].B1=0.000000;
ch2->iir[2].B2=0.000000;
ch2->iir[2].A1=0.000000;
ch2->iir[2].A2=0.000000;
ch3->InputMode=ENCODER_MODE;
ch3->OutputMode=DAC_SERVO_MODE;
ch3->Vel=16000;
ch3->Accel=1000000;
ch3->Jerk=110000000;
ch3->P=1.75;
ch3->I=9.999999747379e-006;
ch3->D=65;
ch3->FFAccel=0;
ch3->FFVel=0;
ch3->MaxI=200;
ch3->MaxErr=2000;
ch3->MaxOutput=2000;
ch3->DeadBandGain=1;
ch3->DeadBandRange=0;
ch3->InputChan0=4;
ch3->InputChan1=4;
ch3->OutputChan0=3;
ch3->OutputChan1=7;
ch3->MasterAxis=-1;
ch3->LimitSwitchOptions=0x0;
ch3->InputGain0=-1;
ch3->InputGain1=1;
ch3->InputOffset0=0;
ch3->InputOffset1=0;
ch3->OutputGain=1;
ch3->OutputOffset=0;
ch3->SlaveGain=1;
ch3->BacklashMode=BACKLASH_OFF;
ch3->BacklashAmount=0;
ch3->BacklashRate=0;
ch3->invDistPerCycle=1;
ch3->Lead=0;
ch3->MaxFollowingError=1000000000;
ch3->StepperAmplitude=250;
ch3->iir[0].B0=1;
ch3->iir[0].B1=0;
ch3->iir[0].B2=0;
ch3->iir[0].A1=0;
ch3->iir[0].A2=0;
ch3->iir[1].B0=1;
ch3->iir[1].B1=0;
ch3->iir[1].B2=0;
ch3->iir[1].A1=0;
ch3->iir[1].A2=0;
ch3->iir[2].B0=1;
ch3->iir[2].B1=0;
ch3->iir[2].B2=0;
ch3->iir[2].A1=0;
ch3->iir[2].A2=0;
DefineCoordSystem(0,1,2,3);
EnableAxis(0);
EnableAxis(1);
EnableAxis(2);
EnableAxis(3);
Zero(0);
Zero(1);
Zero(2);
Zero(3);
for(;;)
{
WaitNextTimeSlice();
if (ReadBit(48)) // Which Z mode are we in?
{
// THC Z mode is on, remove Z from System to allow THC
DefineCoordSystem(0,1,-1,-1);
if (ReadBit(143)) // if plasma is ON?
{
if (ReadBit(142)) //Up?
{
Delay_sec(0.1); // Delay for error filter
Jog(2,10000); // Axis Z move UP
while (ReadBit(142)) ;
Jog(2,0);
while (!CheckDone(2)) ;
}
else if (ReadBit(141)) //DOWN?
{
Delay_sec(0.1); //Delay.
Jog(2,-10000); // Axis Z move DOWN
while (ReadBit(141)) ;
Jog(2,0);
while (!CheckDone(2)) ;
}
}
}
else
{
// THC Z mode is off switch to normal Z mode
DefineCoordSystem(0,1,2,-1);
}
}
}